package com.pureut.storage.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pureut.storage.domain.PurchaseReceipt;
import com.pureut.storage.dto.*;
import com.pureut.storage.export.PurchaseReceiptExport;
import com.pureut.storage.vo.*;
import com.pureut.system.api.dto.PurchaseOrderDto;

import java.util.List;

/***
 *
 * Author:C
 * Date:2022/12/23 10:14
 * @DESC
 */
public interface PurchaseReceiptService extends IService<PurchaseReceipt> {

    /**
     * 获取列表
     */
    List<PurchaseReceiptDto> getReceiptList(PurchaseReceiptVo purchaseReceiptVo);

    /**
     * 新增
     */
    boolean addReceipt(PurchaseReceiptVo purchaseReceiptVo) throws Exception;

    /**
     * 批次到货新增
     */
    boolean batchArrival(PurchaseOrderDto purchaseOrderDto) throws Exception;

    /**
     * 关结
     */
    boolean close(PurchaseReceiptVo purchaseReceiptVo);

    /**
     * 查看
     */
    PurchaseReceiptDto getView(Long id);

    /**
     * 修改
     */
    boolean updateReceipt(PurchaseReceiptVo purchaseReceiptVo);

    /**
     * 删除
     */
    boolean deleteReceipt(String idStr);

    /**
     * 入库/送检
     */
    boolean warehousInspection(WarehousInspectionVo warehousInspectionVo) throws Exception;

    /**
     * 导出
     */
    List<PurchaseReceiptExport> getInfoExport(PurchaseReceiptVo purchaseReceiptVo);

    /**
     * 采购入库（pda）
     */
    PickingRestDbDto warehousingPda(PickingRestDbVo pickingRestDbVo);

    /**
     * 根据采购订单状态修改采购入库状态(feign调用)
     */
    boolean updateReceiptStatus(UpdateReceiptStatusVo updateReceiptStatusVo);

    /**
     * 安卓pda 列表
     */
    List<AndroidPdaDto> androidPdaList(int number);

    /**
     * 手持pda 查看接口
     */
    AndroidPdaViewDto androidPdaView(int number, long id);

    /**
     * 手持pda 拣货撤销列表
     */
    List<AndroidPdaDto> pickCancellationList(int number);

    /**
     * 手持pda 拣货完成
     */
    boolean completionPickingAndroid(CompletionPickingVo completionPickingVo) throws Exception;

    /**
     * 手持pda 拣货撤销
     */
    boolean pickCancellationAndroid(CompletionPickingVo completionPickingVo);

    /**
     * 手持pda 交接列表
     */
    List<AndroidHandoverPdaDto> androidHandoverList(int number);

    /**
     * 手持pda 交接详情
     */
    AndroidHandoverPdaDto androidHandoverView(int number, Long id);

    /**
     * 手持pda 交接
     */
    PickingRestHandoverDto androidHandover(AndroidHandoverVo androidHandoverVo);
}
